<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
    // 异步函数-->同步写法
    // 回调函数写法
    // function fn(cb) {
    //     setTimeout(() => {
    //         console.log(1111);
    //         cb && cb();
    //     }, 1000)
    // }
    // fn(function () {
    //     console.log(2222);
    // });

    // promise写法
    // function fn() {
    //     return new Promise((resolve, reject) => {
    //         setTimeout(() => {
    //             console.log(1111);
    //             resolve(2222);
    //         }, 1000)
    //     })
    // }
    // fn().then(res => {
    //     console.log(res);
    // });

    // async和await写法
    async function fn() {
        // await 后面一定要跟 promise对象
        await new Promise((resolve, reject) => {
            setTimeout(() => {
                console.log(1111);
                resolve();
            }, 1000)
        })
        await new Promise((resolve, reject) => {
            setTimeout(() => {
                console.log(2222);
                resolve();
            }, 1000)
        })
        await new Promise((resolve, reject) => {
            setTimeout(() => {
                console.log(3333);
                resolve();
            }, 1000)
        })
    }
    fn();
</script>
</html>